#include "player.h"

// Plyer类的构造
Player::Player(QObject *parent) : QObject{parent}
{

}

// Plyer类的构造
Player::Player(QString name, QObject *parent) : Player(parent)
{
    m_name = name;
}

// 设置玩家的昵称
void Player::setName(QString name)
{
    m_name = name;
}

// 获取玩家的昵称
QString Player::getName() const
{
    return m_name;
}

// 设置角色
void Player::setRole(Role role)
{
    m_role = role;
}

// 获取角色
Player::Role Player::getRole() const
{
    return m_role;
}

// 设置玩家性别
void Player::setSex(Sex sex)
{
    m_sex = sex;
}

// 获取玩家性别
Player::Sex Player::getSex() const
{
    return m_sex;
}

// 设置玩家头像的方位
void Player::setDirection(Direction direction)
{
    m_direction = direction;
}

// 获取玩家头像的方位
Player::Direction Player::getDirection() const
{
    return m_direction;
}

// 设置玩家的类型
void Player::setType(Type type)
{
    m_type = type;
}

// 获取玩家的类型
Player::Type Player::getType() const
{
    return m_type;
}

// 设置玩家的分数
void Player::setScore(int score)
{
    m_score = score;
}

// 获取玩家的分数
int Player::getScore() const
{
    return m_score;
}

// 设置玩家的输赢结果
void Player::setWin(bool flag)
{
    m_isWin = flag;
}

 // 判断玩家的输赢
bool Player::isWin() const
{
    return m_isWin;
}

// 获取当前对象的上家
void Player::setPrePlayer(Player *player)
{
    m_pre = player;
}

// 设置当前对象的上家
void Player::setNextPlayer(Player *player)
{
    m_next = player;
}

// 获取当前对象的上家
Player *Player::getPrePlayer()
{
    return m_pre;
}

// 获取当前对象的下家
Player *Player::getNextPlayer()
{
    return m_next;
}

// 叫地主 / 抢地主
void Player::grabLordBet(int point)
{
    emit notifyGrabLordBet(this, point); // 发射下注抢地主信号
}

// 存储扑克牌(发牌的时候得到的)
void Player::storeDispatchCard(const Card &card)
{
    m_cards.add(card);
    Cards cs;
    cs.add(card);
    emit notifyPickCards(this, cs);
}

void Player::storeDispatchCards(const Cards &cards)
{
    m_cards.add(cards);
    emit notifyPickCards(this, cards);
}

// 得到所有的牌
Cards Player::getCards() const
{
    return m_cards;
}

// 清空玩家手中的所有牌
void Player::clearCards()
{
    m_cards.clear();
}

// 出牌
void Player::playHand(const Cards &cards)
{
    m_cards.remove(cards);
    emit notifyPlayHand(this, cards);   // 通知已经出牌
}

// 设置出牌的玩家已经待处理的扑克牌
void Player::setPendingInfo(Player *player, const Cards &cards)
{
    m_pendPlayer = player;
    m_pendCards = cards;
}

// 获取当前出牌的玩家
Player* Player::getPendPlayer() const
{
    return m_pendPlayer;
}

// 获取当前所出的扑克牌
Cards Player::getPendCards() const
{
    return m_pendCards;
}

// 存储出牌玩家对象和打出去的牌
void Player::storePendingInfo(Player *player, const Cards &cards)
{
    m_pendPlayer = player;
    m_pendCards = cards;
}

// 准备叫地主
void Player::prepareCallLord()
{

}

// 准备出牌
void Player::preparePlayHand()
{

}

// 考虑叫地主
void Player::thinkCallLord()
{

}

void Player::thinkPlayHand()
{

}


